-- @Author: 作者QQ2308873645
-- @Date:   2021-11-27 13:12:31
-- @Last Modified by:   作者QQ2308873645
-- @Last Modified time: 2022-06-08 19:06:02

function 任务控制类:完成极限挑战(id组, 层数)
    层数 = 层数 + 1
    for n = 1, #id组 do
        if 玩家数据[id组[n]] ~= nil then
            self.符合抓鬼id = true
            if self.符合抓鬼id then
                   local 奖励物品 = {}
                   local 奖励概率 = {}
                   local 奖励数量 = {}
                   local 经验 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "经验")+0
                   local 银子 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "银子")+0
                   local 奖励总概率 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "奖励总概率")+0
                   for i=1,10 do
                       奖励物品[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "物品["..tostring(i).."]")
                       奖励概率[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "概率["..tostring(i).."]")+0
                       奖励数量[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\极限挑战.txt]], "极限挑战", "数量["..tostring(i).."]")+0
                   end
                   self.添加经验 = 层数*经验
                   self.添加银子 = 层数*银子
                   角色处理类:添加经验(玩家数据[id组[n]],self.添加经验,"极限挑战")
                   角色处理类:添加银子(玩家数据[id组[n]],self.添加银子,"极限挑战")
                   if 玩家数据[id组[n]].召唤兽.数据.参战 ~= 0 then
                       玩家数据[id组[n]].召唤兽:添加经验(math.floor(self.添加经验 * 0.05), id组[n], 玩家数据[id组[n]].召唤兽.数据.参战, 10)
                   end
                   local 奖励次数 = 0
                       local 物品名称 = ""
                       local 随机奖励 = math.random(奖励总概率)
                       local 数量 = 0
                       if 随机奖励<=奖励概率[1] then
                          物品名称 = 奖励物品[1]
                          数量 = math.random(奖励数量[1]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[2] then
                          物品名称 = 奖励物品[2]
                          数量 = math.random(奖励数量[2]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[3] then
                          物品名称 = 奖励物品[3]
                          数量 = math.random(奖励数量[3]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[4] then
                          物品名称 = 奖励物品[4]
                          数量 = math.random(奖励数量[4]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[5] then
                          物品名称 = 奖励物品[5]
                          数量 = math.random(奖励数量[5]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[6] then
                          物品名称 = 奖励物品[6]
                          数量 = math.random(奖励数量[6]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[7] then
                          物品名称 = 奖励物品[7]
                          数量 = math.random(奖励数量[7]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[8] then
                          物品名称 = 奖励物品[8]
                          数量 = math.random(奖励数量[8]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[9] then
                          物品名称 = 奖励物品[9]
                          数量 = math.random(奖励数量[9]*层数)
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[10] then
                          物品名称 = 奖励物品[10]
                          数量 = math.random(奖励数量[10]*层数)
                          奖励次数 = 奖励次数 + 1
                       end
                       if 物品名称 ~= "" and 物品名称 == "高级魔兽要诀" then
                          local 技能=取高级兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       elseif 物品名称 ~= "" and 物品名称 == "特殊魔兽要诀" then
                          local 技能=取特殊兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       else
                           道具处理类:给予道具(id组[n],物品名称,nil,nil,数量)
                       end
                   道具处理类:系统兽决存仓(id组[n])
                   道具处理类:系统仓库处理(id组[n])
                   广播消息("#hd/".."#S/(极限挑战)".."#g/ " .. 玩家数据[id组[n]].角色.名称 .. "#y/挑战自我，成功突破第#r/" .. 层数 .. "#y/层，获得了#r/"..物品名称.."#y/物品奖励".."#"..math.random(110))
                   极限数据[id组[n]].层数 = 极限数据[id组[n]].层数 + 1
            end
        end
    end
 end
function 任务控制类:挑战极限挑战(id, 层数)
    if 玩家数据[id].队伍 == 0 then
        发送数据(玩家数据[id].连接id, 7, "#y/此活动必须组队完成")
        return 0
    end
    self.重复名称 = ""
    local 上限 = 0
    for n = 1, #队伍数据[玩家数据[id].队伍].队员数据 do
        if (玩家数据[队伍数据[玩家数据[id].队伍].队员数据[1]].角色.等级 - 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.等级) > 10 or (玩家数据[队伍数据[玩家数据[id].队伍].队员数据[1]].角色.等级 - 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.等级) < -10 then
           广播队伍消息(id, 7, "#y/队伍平均等级不能超过10级才可以进行此活动")
           return 0
        end
        if 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.渡劫 ==nil or 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.渡劫 == false then
           广播队伍消息(id, 7, "#y/队伍有玩家未渡劫无法参加此活动")
           return 0
        end
        if 极限数据[玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].id] == nil then
            极限数据[玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].id] = {层数=0,名称=玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称}
        end
        if 极限数据[玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].id].层数 ~= 层数 then
            self.重复名称 = 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称
        end
        if 极限数据[玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].id].层数 >= 50 then
            上限 = 1
            self.重复名称 = 玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称
        end
    end
    if 上限 == 1 then
        广播队伍消息(id, 7, "#g/" .. self.重复名称 .. "#y/极限挑战已经完成了50层无法继续此活动")
        return 0
    end
    if self.重复名称 ~= "" then
        广播队伍消息(id, 7, "#g/" .. self.重复名称 .. "#y/层数不同不能一起挑战")
        return 0
    end

    战斗准备类:进入处理(id, 888901, 层数, 层数)
 end
